package com.mybatis.mapper;

import com.mybatis.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Copyright (c) 2023-2033 All Rights Reserved
 *
 * XML映射文件与Mapper接口关联条件：
 * 1. XML映射文件的 ```<mapper namespace="ClassName">``` 和Mapper映射文件的类名一致。
 * 2. XML映射文件的 ```<insert|delete|update|select id="methodName">``` 和Mapper接口的方法名保持一致。
 *
 * TODO: 传入动态参数操作Mapper接口数据库操作方法
 *  1. XML映射文件通过 #{username} 动态获取Mapper接口方法传入的参数。
 *  2. XML映射文件通过 类的属性名 动态获取Mapper接口方法传入的类对象参数。
 *  3. Mapper接口方法参数通过 @Param("param") 指定XML映射文件获取参数时的key
 *
 * @date: 2023/9/27
 */
public interface ParamMapper {
    /**
     * 查询操作，获取所有用户信息
     */
    List<User> getAllUser();

    /**
     * 查询操作，根据用户名获取用户信息
     */
    User getUserByName(String username);

    /**
     * 查询操作，输入用户名、密码获取用户信息
     */
    User getUserByNameAndPwd(String username, String password);

    /**
     * 查询操作，输入Map，Map中保存用户名、密码获取用户信息
     */
    User getUserByMap(Map<String, Object> map);

    /**
     * 通过注解 @Param() 指定参数名
     */
    User getUserByParam(@Param("username") String username, @Param("password") String password);

    /**
     * 插入操作，输入参数为类对象
     */
    int insertUser(User user);

}
